{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# http://evexdb.org/pmresources/vec-space-models/wikipedia-pubmed-and-PMC-w2v.bin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Importing the required packages\n",
    "import os\n",
    "import re\n",
    "import csv\n",
    "import codecs\n",
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import nltk\n",
    "from nltk.corpus import stopwords\n",
    "from nltk.stem import SnowballStemmer\n",
    "from string import punctuation\n",
    "from gensim.models import KeyedVectors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.1.2\n"
     ]
    }
   ],
   "source": [
    "import keras\n",
    "print(keras.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.3.0\n"
     ]
    }
   ],
   "source": [
    "import tensorflow\n",
    "print(tensorflow.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Indexing word vectors\n",
      "Found 5443656 word vectors of word2vec\n"
     ]
    }
   ],
   "source": [
    "EMBEDDING_FILE = 'wikipedia-pubmed-and-PMC-w2v.bin'\n",
    "print('Indexing word vectors')\n",
    "word2vec = KeyedVectors.load_word2vec_format(EMBEDDING_FILE,binary=True)\n",
    "print('Found %s word vectors of word2vec' % len(word2vec.vocab))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import copy\n",
    "from keras.preprocessing.sequence import pad_sequences"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Reading the text file 'DRUG-AE.rel' which provides relations between drugs and adverse effects.\n",
    "TEXT_FILE = 'DRUG-AE.rel'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating lists for the input fields and corresponding labels\n",
    "input_data_ae = []\n",
    "op_labels_ae = []\n",
    "\n",
    "sentences = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "f = open(TEXT_FILE, 'r')\n",
    "\n",
    "for each_line in f.readlines():\n",
    "    sent_list = np.zeros([0,200])\n",
    "    labels = np.zeros([0,3])\n",
    "    tokens = each_line.split(\"|\")\n",
    "    sent = tokens[1]\n",
    "    if sent in sentences:\n",
    "        continue\n",
    "    sentences.append(sent)\n",
    "    begin_offset = int(tokens[3])\n",
    "    end_offset = int(tokens[4])\n",
    "    mid_offset = range(begin_offset+1, end_offset)\n",
    "    word_tokens = nltk.word_tokenize(sent)\n",
    "    offset = 0\n",
    "    for each_token in word_tokens:\n",
    "        offset = sent.find(each_token, offset)\n",
    "        offset1 = copy.deepcopy(offset)\n",
    "        offset += len(each_token)\n",
    "        if each_token in punctuation or re.search(r'\\d', each_token):\n",
    "            continue\n",
    "        each_token = each_token.lower()\n",
    "        each_token = re.sub(\"[^A-Za-z\\-]+\",\"\", each_token)\n",
    "        if each_token in word2vec.vocab:\n",
    "            new_word = word2vec.word_vec(each_token)\n",
    "        if offset1 == begin_offset:\n",
    "            sent_list = np.append(sent_list, np.array([new_word]), axis=0)\n",
    "            labels = np.append(labels, np.array([[0,0,1]]), axis=0)\n",
    "        elif offset == end_offset or offset in mid_offset:\n",
    "            sent_list = np.append(sent_list, np.array([new_word]), axis=0)\n",
    "            labels = np.append(labels, np.array([[0,1,0]]), axis=0)\n",
    "        else:\n",
    "            sent_list = np.append(sent_list, np.array([new_word]), axis=0)\n",
    "            labels = np.append(labels, np.array([[1,0,0]]), axis=0)\n",
    "\n",
    "    input_data_ae.append(sent_list)\n",
    "    op_labels_ae.append(labels)\n",
    "input_data_ae = np.array(input_data_ae)\n",
    "op_labels_ae  = np.array(op_labels_ae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_data_ae = pad_sequences(input_data_ae, maxlen=30, dtype='float64', padding='post')\n",
    "op_labels_ae = pad_sequences(op_labels_ae, maxlen=30, dtype='float64', padding='post')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4271\n",
      "4271\n"
     ]
    }
   ],
   "source": [
    "print(len(input_data_ae))\n",
    "print(len(op_labels_ae))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.preprocessing.text import Tokenizer\n",
    "from keras.layers import Dense, Input, LSTM, Embedding, Dropout, Activation,Bidirectional, TimeDistributed\n",
    "from keras.layers.merge import concatenate\n",
    "from keras.models import Model, Sequential\n",
    "from keras.layers.normalization import BatchNormalization\n",
    "from keras.callbacks import EarlyStopping, ModelCheckpoint"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating Train and Validation datasets, for 4271 entries, 4000 in train dataset, and 271 in validation dataset\n",
    "x_train= input_data_ae[:4000]\n",
    "x_test = input_data_ae[4000:]\n",
    "y_train = op_labels_ae[:4000]\n",
    "y_test =op_labels_ae[4000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch = 1      # Making the batch size as 1, as showing model each of the instances one-by-one\n",
    "# Adding Bidirectional LSTM with Dropout, and Time Distributed layer with Dropout\n",
    "# Finally using Adam optimizer for training purpose\n",
    "xin = Input(batch_shape=(batch,30,200), dtype='float')\n",
    "seq = Bidirectional(LSTM(300, return_sequences=True),merge_mode='concat')(xin)\n",
    "mlp1 = Dropout(0.2)(seq)\n",
    "mlp2 = TimeDistributed(Dense(60, activation='softmax'))(mlp1)\n",
    "mlp3 = Dropout(0.2)(mlp2)\n",
    "mlp4 = TimeDistributed(Dense(3, activation='softmax'))(mlp3)\n",
    "model = Model(inputs=xin, outputs=mlp4)\n",
    "model.compile(optimizer='Adam', loss='categorical_crossentropy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 4000 samples, validate on 271 samples\n",
      "Epoch 1/50\n",
      "4000/4000 [==============================] - 363s 91ms/step - loss: 0.1661 - val_loss: 0.1060\n",
      "Epoch 2/50\n",
      "4000/4000 [==============================] - 363s 91ms/step - loss: 0.1066 - val_loss: 0.0894\n",
      "Epoch 3/50\n",
      "4000/4000 [==============================] - 361s 90ms/step - loss: 0.0903 - val_loss: 0.0720\n",
      "Epoch 4/50\n",
      "4000/4000 [==============================] - 364s 91ms/step - loss: 0.0787 - val_loss: 0.0692\n",
      "Epoch 5/50\n",
      "4000/4000 [==============================] - 362s 91ms/step - loss: 0.0698 - val_loss: 0.0636\n",
      "Epoch 6/50\n",
      "4000/4000 [==============================] - 366s 92ms/step - loss: 0.0608 - val_loss: 0.0628\n",
      "Epoch 7/50\n",
      "4000/4000 [==============================] - 369s 92ms/step - loss: 0.0514 - val_loss: 0.0635\n",
      "Epoch 8/50\n",
      "4000/4000 [==============================] - 368s 92ms/step - loss: 0.0447 - val_loss: 0.0689\n",
      "Epoch 9/50\n",
      "4000/4000 [==============================] - 364s 91ms/step - loss: 0.0383 - val_loss: 0.0739\n",
      "Epoch 10/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0328 - val_loss: 0.0749\n",
      "Epoch 11/50\n",
      "4000/4000 [==============================] - 366s 91ms/step - loss: 0.0286 - val_loss: 0.0882\n",
      "Epoch 12/50\n",
      "4000/4000 [==============================] - 366s 92ms/step - loss: 0.0241 - val_loss: 0.0897\n",
      "Epoch 13/50\n",
      "4000/4000 [==============================] - 368s 92ms/step - loss: 0.0211 - val_loss: 0.0871\n",
      "Epoch 14/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0184 - val_loss: 0.0982\n",
      "Epoch 15/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0170 - val_loss: 0.1038\n",
      "Epoch 16/50\n",
      "4000/4000 [==============================] - 366s 92ms/step - loss: 0.0153 - val_loss: 0.1064\n",
      "Epoch 17/50\n",
      "4000/4000 [==============================] - 366s 91ms/step - loss: 0.0119 - val_loss: 0.1239\n",
      "Epoch 18/50\n",
      "4000/4000 [==============================] - 369s 92ms/step - loss: 0.0121 - val_loss: 0.1229\n",
      "Epoch 19/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0112 - val_loss: 0.1255\n",
      "Epoch 20/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0094 - val_loss: 0.1311\n",
      "Epoch 21/50\n",
      "4000/4000 [==============================] - 366s 92ms/step - loss: 0.0079 - val_loss: 0.1291\n",
      "Epoch 22/50\n",
      "4000/4000 [==============================] - 363s 91ms/step - loss: 0.0079 - val_loss: 0.1242\n",
      "Epoch 23/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0077 - val_loss: 0.1325\n",
      "Epoch 24/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0066 - val_loss: 0.1407\n",
      "Epoch 25/50\n",
      "4000/4000 [==============================] - 363s 91ms/step - loss: 0.0069 - val_loss: 0.1335\n",
      "Epoch 26/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0061 - val_loss: 0.1440\n",
      "Epoch 27/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0059 - val_loss: 0.1418\n",
      "Epoch 28/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0062 - val_loss: 0.1367\n",
      "Epoch 29/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0058 - val_loss: 0.1373\n",
      "Epoch 30/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0057 - val_loss: 0.1433\n",
      "Epoch 31/50\n",
      "4000/4000 [==============================] - 368s 92ms/step - loss: 0.0054 - val_loss: 0.1343\n",
      "Epoch 32/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0049 - val_loss: 0.1546\n",
      "Epoch 33/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0047 - val_loss: 0.1449\n",
      "Epoch 34/50\n",
      "4000/4000 [==============================] - 368s 92ms/step - loss: 0.0044 - val_loss: 0.1507\n",
      "Epoch 35/50\n",
      "4000/4000 [==============================] - 367s 92ms/step - loss: 0.0045 - val_loss: 0.1403\n",
      "Epoch 36/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0043 - val_loss: 0.1497\n",
      "Epoch 37/50\n",
      "4000/4000 [==============================] - 366s 92ms/step - loss: 0.0040 - val_loss: 0.1485\n",
      "Epoch 38/50\n",
      "4000/4000 [==============================] - 371s 93ms/step - loss: 0.0046 - val_loss: 0.1547\n",
      "Epoch 39/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0044 - val_loss: 0.1622\n",
      "Epoch 40/50\n",
      "4000/4000 [==============================] - 364s 91ms/step - loss: 0.0034 - val_loss: 0.1609\n",
      "Epoch 41/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0037 - val_loss: 0.1633\n",
      "Epoch 42/50\n",
      "4000/4000 [==============================] - 365s 91ms/step - loss: 0.0043 - val_loss: 0.1584\n",
      "Epoch 43/50\n",
      "4000/4000 [==============================] - 372s 93ms/step - loss: 0.0031 - val_loss: 0.1620\n",
      "Epoch 44/50\n",
      "4000/4000 [==============================] - 364s 91ms/step - loss: 0.0039 - val_loss: 0.1602\n",
      "Epoch 45/50\n",
      "4000/4000 [==============================] - 364s 91ms/step - loss: 0.0035 - val_loss: 0.1786\n",
      "Epoch 46/50\n",
      "4000/4000 [==============================] - 344s 86ms/step - loss: 0.0033 - val_loss: 0.1596\n",
      "Epoch 47/50\n",
      "4000/4000 [==============================] - 321s 80ms/step - loss: 0.0033 - val_loss: 0.1650\n",
      "Epoch 48/50\n",
      "4000/4000 [==============================] - 322s 80ms/step - loss: 0.0036 - val_loss: 0.1684\n",
      "Epoch 49/50\n",
      "4000/4000 [==============================] - 319s 80ms/step - loss: 0.0027 - val_loss: 0.1751\n",
      "Epoch 50/50\n",
      "4000/4000 [==============================] - 319s 80ms/step - loss: 0.0035 - val_loss: 0.1666\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x7f48213a3b38>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(x_train, y_train,\n",
    "          batch_size=batch,\n",
    "          epochs=50,\n",
    "          validation_data=(x_test, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "val_pred = model.predict(x_test,batch_size=batch)\n",
    "labels = []\n",
    "for i in range(len(val_pred)):\n",
    "    b = np.zeros_like(val_pred[i])\n",
    "    b[np.arange(len(val_pred[i])), val_pred[i].argmax(1)] = 1\n",
    "    labels.append(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(271, 30, 3)\n"
     ]
    }
   ],
   "source": [
    "print(val_pred.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "from sklearn.metrics import precision_score\n",
    "from sklearn.metrics import recall_score  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "score =[]\n",
    "f1 = []\n",
    "precision =[]\n",
    "recall =[]\n",
    "point = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/site-packages/sklearn/metrics/classification.py:1135: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n",
      "/usr/local/lib/python3.6/site-packages/sklearn/metrics/classification.py:1137: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no true samples.\n",
      "  'recall', 'true', average, warn_for)\n",
      "/usr/local/lib/python3.6/site-packages/sklearn/metrics/classification.py:1135: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n",
      "/usr/local/lib/python3.6/site-packages/sklearn/metrics/classification.py:1137: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples.\n",
      "  'recall', 'true', average, warn_for)\n"
     ]
    }
   ],
   "source": [
    "for i in range(len(y_test)):\n",
    "    if(f1_score(labels[i],y_test[i],average='weighted')>.6):\n",
    "        point.append(i)\n",
    "    score.append(f1_score(labels[i],y_test[i],average='weighted'))\n",
    "    precision.append(precision_score(labels[i],y_test[i],average='weighted'))\n",
    "    recall.append(recall_score(labels[i],y_test[i],average='weighted'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "69.37269372693727\n"
     ]
    }
   ],
   "source": [
    "print(len(point)/len(labels)*100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.686425174879\n"
     ]
    }
   ],
   "source": [
    "print(np.mean(score))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.975002548625\n"
     ]
    }
   ],
   "source": [
    "print(np.mean(precision))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.576137761378\n"
     ]
    }
   ],
   "source": [
    "print(np.mean(recall))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.82352941176470584, 0.82352941176470584, 0.32727272727272727, 0.88888888888888895, 0.45833333333333331, 0.60465116279069764, 0.88888888888888895, 0.72340425531914887, 0.12444444444444444, 0.98305084745762705, 0.80000000000000004, 1.0, 0.72340425531914887, 0.42727272727272719, 0.86792452830188693, 0.72340425531914887, 0.5864864864864866, 1.0, 0.80000000000000004, 0.60465116279069764, 0.80000000000000004, 0.94736842105263164, 0.20413793103448274, 1.0, 0.38274509803921569, 0.96551724137931039, 0.74999999999999989, 0.39298245614035082, 0.77551020408163263, 0.4210526315789474, 0.80000000000000004, 1.0, 0.66666666666666663, 0.39629629629629631, 0.12473118279569892, 0.74999999999999989, 0.4210526315789474, 0.46153846153846151, 0.69565217391304357, 0.59078590785907859, 0.78974358974358982, 0.86792452830188693, 0.51239316239316246, 0.57142857142857151, 0.61515151515151512, 0.29999999999999999, 0.5, 0.51869918699187001, 0.66666666666666663, 0.71449275362318843, 0.77551020408163263, 0.67575757575757578, 0.12473118279569892, 0.74999999999999989, 0.9285714285714286, 0.35272727272727267, 0.94736842105263164, 0.72340425531914887, 0.437037037037037, 0.53658536585365846, 0.80000000000000004, 1.0, 0.45135135135135135, 0.9285714285714286, 0.4210526315789474, 0.63636363636363635, 0.84615384615384603, 0.80000000000000004, 0.77551020408163263, 0.53333333333333333, 0.16888888888888889, 1.0, 0.41290322580645167, 0.9285714285714286, 0.62222222222222212, 0.45000000000000001, 0.82352941176470584, 0.78911564625850339, 0.54166666666666663, 0.46153846153846151, 0.5, 0.60465116279069764, 0.60465116279069764, 0.59316239316239316, 0.37837837837837834, 0.5, 0.72340425531914887, 0.69565217391304357, 0.77551020408163263, 0.5, 0.21458333333333332, 0.69565217391304357, 0.86792452830188693, 1.0, 1.0, 1.0, 0.71463414634146338, 0.86792452830188693, 0.66666666666666652, 0.94736842105263164, 1.0, 0.88888888888888895, 0.489247311827957, 1.0, 0.9285714285714286, 0.69545454545454544, 0.67517730496453887, 0.69565217391304357, 0.27333333333333332, 1.0, 0.80000000000000004, 0.46153846153846151, 1.0, 0.9285714285714286, 0.88888888888888895, 0.43076923076923079, 0.96551724137931039, 0.88888888888888895, 0.80000000000000004, 0.16888888888888889, 0.5, 0.57904761904761903, 0.86792452830188693, 0.65853658536585369, 0.72340425531914887, 0.74999999999999989, 0.27619047619047621, 0.45135135135135135, 0.72340425531914887, 0.98305084745762705, 0.20347222222222222, 0.84615384615384603, 0.31111111111111106, 0.66666666666666663, 0.84615384615384603, 0.5357142857142857, 0.86792452830188693, 0.94736842105263164, 0.94736842105263164, 0.69565217391304357, 0.69565217391304357, 0.25656565656565655, 0.96551724137931039, 0.75600000000000001, 0.29032258064516125, 0.88888888888888895, 0.69565217391304357, 0.62097902097902091, 0.96551724137931039, 0.51345029239766082, 0.74999999999999989, 0.29166666666666669, 0.84615384615384603, 0.72340425531914887, 0.38124999999999998, 0.74999999999999989, 0.34962962962962968, 0.81200000000000006, 0.86792452830188693, 0.2857142857142857, 1.0, 1.0, 0.94736842105263164, 0.80000000000000004, 0.74999999999999989, 0.66666666666666663, 0.60465116279069764, 0.6924242424242425, 0.86792452830188693, 0.37837837837837834, 0.72340425531914887, 0.56499999999999984, 0.84615384615384603, 0.85925925925925928, 0.98305084745762705, 0.49849849849849853, 0.69565217391304357, 0.69565217391304357, 0.88888888888888895, 0.8484848484848484, 0.25555555555555559, 0.84615384615384603, 0.84615384615384603, 0.88888888888888895, 0.40727272727272723, 0.72340425531914887, 0.77551020408163263, 0.5, 0.60465116279069764, 0.96551724137931039, 0.69565217391304357, 0.6210526315789473, 0.82352941176470584, 0.63636363636363635, 0.90909090909090906, 0.38274509803921569, 0.63636363636363635, 0.65116279069767435, 0.77551020408163263, 1.0, 0.34949494949494947, 0.46153846153846151, 0.77551020408163263, 0.15747126436781608, 0.74999999999999989, 1.0, 0.35625000000000001, 1.0, 0.88888888888888895, 0.94736842105263164, 0.37837837837837834, 0.66666666666666663, 0.27619047619047621, 0.94736842105263164, 0.82352941176470584, 0.42727272727272719, 0.63636363636363635, 0.86792452830188693, 1.0, 0.93333333333333335, 0.78911564625850339, 0.84615384615384603, 0.88888888888888895, 0.35315315315315315, 0.4210526315789474, 0.74999999999999989, 0.77551020408163263, 0.66666666666666663, 0.63636363636363635, 0.53658536585365846, 0.69565217391304357, 0.87547169811320757, 0.47863247863247871, 0.86792452830188693, 0.66666666666666663, 0.84615384615384603, 0.77551020408163263, 0.34722222222222221, 0.60666666666666669, 0.82352941176470584, 1.0, 0.14999999999999999, 1.0, 0.47058823529411764, 0.77551020408163263, 0.9285714285714286, 0.9285714285714286, 0.19236111111111109, 0.87878787878787878, 0.36476190476190479, 1.0, 0.72340425531914887, 1.0, 0.69565217391304357, 1.0, 0.3515151515151515, 0.72340425531914887, 0.88888888888888895, 0.88888888888888895, 0.96551724137931039, 0.60465116279069764, 0.77551020408163263, 1.0, 0.90909090909090906, 0.46153846153846151, 0.60465116279069764, 0.28559139784946236, 0.63636363636363635, 0.77551020408163263, 0.69565217391304357, 0.45925925925925931]\n",
      "\n",
      "------x------\n",
      "\n",
      "[1.0, 1.0, 0.96666666666666667, 1.0, 1.0, 1.0, 1.0, 1.0, 0.93333333333333335, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.97777777777777775, 1.0, 1.0, 0.7466666666666667, 1.0, 1.0, 1.0, 1.0, 1.0, 0.84999999999999998, 0.96666666666666667, 1.0, 1.0, 1.0, 1.0, 0.92820512820512824, 0.85555555555555551, 1.0, 0.97777777777777775, 1.0, 0.90222222222222226, 1.0, 1.0, 0.88611111111111107, 1.0, 0.96666666666666667, 1.0, 0.97777777777777775, 0.96666666666666667, 1.0, 1.0, 0.84999999999999998, 1.0, 1.0, 0.94999999999999996, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.80000000000000004, 1.0, 1.0, 1.0, 1.0, 0.93333333333333335, 0.69230769230769229, 1.0, 0.96666666666666667, 0.84848484848484851, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.96666666666666667, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.90000000000000002, 0.83508771929824566, 1.0, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.76363636363636367, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.80555555555555558, 1.0, 1.0, 1.0, 0.98333333333333328, 1.0, 0.69999999999999996, 1.0, 1.0, 0.97499999999999998, 1.0, 1.0, 1.0, 1.0, 1.0, 0.98333333333333328, 1.0, 0.82173913043478253, 0.76000000000000001, 1.0, 1.0, 0.97142857142857142, 1.0, 0.94999999999999996, 1.0, 0.78666666666666674, 1.0, 1.0, 1.0, 1.0, 0.97333333333333327, 0.96666666666666667, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.92800000000000005, 1.0, 0.96666666666666667, 1.0, 1.0, 1.0, 0.86419753086419759, 0.94999999999999996, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.97777777777777775, 1.0, 0.93333333333333335, 1.0, 1.0, 1.0, 1.0, 1.0, 0.93333333333333335, 1.0, 1.0, 0.96000000000000008, 1.0, 1.0, 1.0, 1.0, 1.0, 0.80555555555555558, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.93333333333333335, 0.96666666666666667, 1.0, 1.0, 0.72592592592592597, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.96666666666666667, 0.8484848484848484, 1.0, 1.0, 1.0, 1.0, 0.83333333333333337, 0.89743589743589747, 1.0, 1.0, 0.29999999999999999, 1.0, 1.0, 1.0, 1.0, 1.0, 0.97333333333333327, 0.92948717948717952, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.75238095238095248, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.94444444444444442, 1.0, 1.0, 1.0, 1.0]\n",
      "\n",
      "------x------\n",
      "\n",
      "[0.69999999999999996, 0.69999999999999996, 0.23333333333333334, 0.80000000000000004, 0.33333333333333331, 0.43333333333333335, 0.80000000000000004, 0.56666666666666665, 0.066666666666666666, 0.96666666666666667, 0.66666666666666663, 1.0, 0.56666666666666665, 0.29999999999999999, 0.76666666666666672, 0.56666666666666665, 0.43333333333333335, 1.0, 0.66666666666666663, 0.43333333333333335, 0.66666666666666663, 0.90000000000000002, 0.13333333333333333, 1.0, 0.26666666666666666, 0.93333333333333335, 0.59999999999999998, 0.26666666666666666, 0.6333333333333333, 0.26666666666666666, 0.66666666666666663, 1.0, 0.5, 0.26666666666666666, 0.066666666666666666, 0.59999999999999998, 0.26666666666666666, 0.29999999999999999, 0.53333333333333333, 0.43333333333333335, 0.73333333333333328, 0.76666666666666672, 0.36666666666666664, 0.40000000000000002, 0.46666666666666667, 0.20000000000000001, 0.33333333333333331, 0.36666666666666664, 0.5, 0.56666666666666665, 0.6333333333333333, 0.53333333333333333, 0.066666666666666666, 0.59999999999999998, 0.8666666666666667, 0.23333333333333334, 0.90000000000000002, 0.56666666666666665, 0.29999999999999999, 0.36666666666666664, 0.66666666666666663, 1.0, 0.29999999999999999, 0.8666666666666667, 0.26666666666666666, 0.46666666666666667, 0.73333333333333328, 0.66666666666666663, 0.6333333333333333, 0.40000000000000002, 0.10000000000000001, 1.0, 0.29999999999999999, 0.8666666666666667, 0.46666666666666667, 0.33333333333333331, 0.69999999999999996, 0.66666666666666663, 0.40000000000000002, 0.29999999999999999, 0.33333333333333331, 0.43333333333333335, 0.43333333333333335, 0.43333333333333335, 0.23333333333333334, 0.33333333333333331, 0.56666666666666665, 0.53333333333333333, 0.6333333333333333, 0.33333333333333331, 0.13333333333333333, 0.53333333333333333, 0.76666666666666672, 1.0, 1.0, 1.0, 0.56666666666666665, 0.76666666666666672, 0.53333333333333333, 0.90000000000000002, 1.0, 0.80000000000000004, 0.36666666666666664, 1.0, 0.8666666666666667, 0.56666666666666665, 0.56666666666666665, 0.53333333333333333, 0.20000000000000001, 1.0, 0.66666666666666663, 0.29999999999999999, 1.0, 0.8666666666666667, 0.80000000000000004, 0.29999999999999999, 0.93333333333333335, 0.80000000000000004, 0.66666666666666663, 0.10000000000000001, 0.33333333333333331, 0.43333333333333335, 0.76666666666666672, 0.5, 0.56666666666666665, 0.59999999999999998, 0.16666666666666666, 0.29999999999999999, 0.56666666666666665, 0.96666666666666667, 0.13333333333333333, 0.73333333333333328, 0.20000000000000001, 0.5, 0.73333333333333328, 0.40000000000000002, 0.76666666666666672, 0.90000000000000002, 0.90000000000000002, 0.53333333333333333, 0.53333333333333333, 0.16666666666666666, 0.93333333333333335, 0.69999999999999996, 0.20000000000000001, 0.80000000000000004, 0.53333333333333333, 0.5, 0.93333333333333335, 0.36666666666666664, 0.59999999999999998, 0.20000000000000001, 0.73333333333333328, 0.56666666666666665, 0.26666666666666666, 0.59999999999999998, 0.26666666666666666, 0.69999999999999996, 0.76666666666666672, 0.16666666666666666, 1.0, 1.0, 0.90000000000000002, 0.66666666666666663, 0.59999999999999998, 0.5, 0.43333333333333335, 0.53333333333333333, 0.76666666666666672, 0.23333333333333334, 0.56666666666666665, 0.40000000000000002, 0.73333333333333328, 0.80000000000000004, 0.96666666666666667, 0.36666666666666664, 0.53333333333333333, 0.53333333333333333, 0.80000000000000004, 0.83333333333333337, 0.16666666666666666, 0.73333333333333328, 0.73333333333333328, 0.80000000000000004, 0.26666666666666666, 0.56666666666666665, 0.6333333333333333, 0.33333333333333331, 0.43333333333333335, 0.93333333333333335, 0.53333333333333333, 0.46666666666666667, 0.69999999999999996, 0.46666666666666667, 0.83333333333333337, 0.26666666666666666, 0.46666666666666667, 0.5, 0.6333333333333333, 1.0, 0.23333333333333334, 0.29999999999999999, 0.6333333333333333, 0.10000000000000001, 0.59999999999999998, 1.0, 0.26666666666666666, 1.0, 0.80000000000000004, 0.90000000000000002, 0.23333333333333334, 0.5, 0.16666666666666666, 0.90000000000000002, 0.69999999999999996, 0.29999999999999999, 0.46666666666666667, 0.76666666666666672, 1.0, 0.93333333333333335, 0.66666666666666663, 0.73333333333333328, 0.80000000000000004, 0.23333333333333334, 0.26666666666666666, 0.59999999999999998, 0.6333333333333333, 0.5, 0.46666666666666667, 0.36666666666666664, 0.53333333333333333, 0.80000000000000004, 0.33333333333333331, 0.76666666666666672, 0.5, 0.73333333333333328, 0.6333333333333333, 0.23333333333333334, 0.46666666666666667, 0.69999999999999996, 1.0, 0.10000000000000001, 1.0, 0.33333333333333331, 0.6333333333333333, 0.8666666666666667, 0.8666666666666667, 0.13333333333333333, 0.83333333333333337, 0.23333333333333334, 1.0, 0.56666666666666665, 1.0, 0.53333333333333333, 1.0, 0.23333333333333334, 0.56666666666666665, 0.80000000000000004, 0.80000000000000004, 0.93333333333333335, 0.43333333333333335, 0.6333333333333333, 1.0, 0.83333333333333337, 0.29999999999999999, 0.43333333333333335, 0.20000000000000001, 0.46666666666666667, 0.6333333333333333, 0.53333333333333333, 0.29999999999999999]\n"
     ]
    }
   ],
   "source": [
    "print(score)\n",
    "print(\"\\n------x------\\n\")\n",
    "print(precision)\n",
    "print(\"\\n------x------\\n\")\n",
    "print(recall)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
